package cn.wss.flowable.service;

import cn.wss.flowable.common.Page;
import cn.wss.flowable.model.FlowableTask;

import java.util.Map;

public interface FlowableTaskService {

  // 查询代办
  Page<FlowableTask> pageTask(Map<String, Object> variables);

  // 完成
  void complete(String id, Map<String, Object> variables, Map<String, Object> localVariables);

  // 完成
  void complete(String id, Map<String, Object> variables, Map<String, Object> localVariables,
      String comment);

  // 设置代办人
  void setAssignee(String id, String assignee);

  // 打回上一步 节点任务有多入口慎用
  void callbackPrevious(String taskId, Map<String, Object> data);

  // 查询节点全局参数
  Map<String, Object> getParams(String taskId);

  // 查询节点全局参数
  Object getParamsByVariableName(String taskId, String variableName);

  // 查询节点局部参数
  Map<String, Object> getLocalParams(String taskId);

  // 查询节点局部参数
  Object getLocalParamsByVariableName(String taskId, String variableName);

  // 设置节点全局参数
  void setParams(String taskId, String variableName, Object variableValue);

  // 设置节点全局参数
  void setParams(String taskId, Map<String, Object> variables);

  // 设置节点局部参数
  void setLocalParams(String taskId, String variableName, Object variableValue);

  // 设置节点局部参数
  void setLocalParams(String taskId, Map<String, Object> variables);

  boolean isLastUserTask(String taskId, Map<String, Object> map);
}
